iT邦幫忙

DAY 15
1

練習如何去開發一個通訊軟體 Boo it!系列 第 15

Day15 - HAML ! 寫份HTML文件邁向藝術的境界

  • 分享至 

  • xImage
  •  

HAML,(HTML Abstraction Markup Language),一個用於描述HTML的標記語言。目的在一個原則,使得標籤式語法更簡單、漂亮。如果是以Rails 開發網頁的使用者們一定對這個HAML用法不陌生。

在官網首頁裡面,有個使用範例。我們可以看到將HTML ( .erb )轉換成 HAML(.haml)語法的轉換。

簡單來說,就是將標籤以 % 以及 . 取代,可以方便我們去撰寫一份HTML文件。

利用 縮排 來將標籤式做內外包夾定義。

例如:

Hello HTML 

我們可以以HAML語法來取代達到一樣的效果

%html

    %head

    %body Hello Haml

Haml 裡面**註解**有兩種用法

<第1種>

/註解內容

使得在網頁在瀏覽器端可以看到此註解,他會轉譯成**<!--HTML註解用法-->**

<第2種>

-#註解內容

註解起來不會在網頁端顯示...

接下來我們要去設定一份HTML5 文件

Haml設定html5格式如下

<方法一> 在sinatra裡面設定方式

set :haml, :format => :html5

以下是sinatra的路由 以haml :指向目標

get '/' do

  haml :index

end

<方法二>直接在haml文件上開頭加入!!!5

!!!5

都可以達到一樣的效果


那接下來就是介紹如何傳遞參數給HAML

在sinatra裡面。

haml :test , :locals =>{:tmp => "123"}

在網頁端顯示就會成功傳遞參數

傳遞方式其實也不一定透過GET,POST ,也可以透過cookie 以及 session

在設定session可以透過以下方式

%p{:id => "session_name"} #{session[:tmp].inspect}

用inspect 來存取session 物件的內容。


那在撰寫HTML文件時,通常會搭配使用CSS以及JavaScript

我們可以透過引用外部js .css來達到使用他們的效果

那接下來我們就來嘗試使用Haml 用法來撰寫HTML文件。

我們要來做登入介面。欄位有 帳號 以及 密碼 欄位。

這是HTML 的語法

<title>Login</title>

<form name="login" action="login" method="post">
Username:<input type="text" name="username">
</br>
Password:<input type="password" name="password">
</br>
<input type="submit" value="Login">
</form>

我們只要按照標籤的編排方式,使用haml語法縮排就可以完成一樣的效果。寫起來也相當的容易、簡單、漂亮。

!!!
%html
    %head
        %title login
    %body
        %form{:name => "login", :method => "post"}
            .username username:
            %input{:type => "text" , :name => "username"}
            .password password:
            %input{:type => "password", :name => "password"}
            %input{:type => "submit" , :value => "login"}

當然! 如果你是習慣以編輯器如:sublime這類會自動幫我們加上後括號、標籤的編輯器。

其實也是相當好用。使用純文字在編輯一份HTML文件,用HAML編寫算是相當的好用喔!

喔對了 安裝只要以下指令就可以完成囉! Rails 以及 Sinatra的使用者是相當好用的工具!

gem install haml

上一篇
Day14 - JSON - 資料交換的秘密武器!
下一篇
Day16 - MongoDB ‧ 資料儲存的百寶箱!
系列文
練習如何去開發一個通訊軟體 Boo it!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言